Quartz 2D
概要
Painter's model
Quartz 2D のイメージングモデルは、Adobe の PDF 規格により規定されているイメージングモデルに基づいており、Painter's model とも呼ばれる。 Painter's model では、描画の出力先を ページ、ページの上に重ねる描画を ペイント と呼ぶ。ページは、物理的な紙や bitmap、PDFイメージ等の出力対象を抽象化した概念である。このページに対してペイントを重ねることで描画を行う。ただし、ページ上のオブジェクトはペイントを重ねることでしか上書きすることができない、という制約がある。そのため、描画の順番が重要になってくる。
https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/Art/painters_model.gif
Graphics Context
Graphics Context とは、Quartz が参照するための出力先に関する情報がカプセル化されたオブジェクトである。ページ上のペイントをその出力先で再現するのに必要な情報が格納されている。Graphics Context が出力先間の差異を吸収するため、同様の Quartz 描画操作を繰り返せば、異なる出力先に対しても同じペイントが出力できるようになっている。 サポートされている Graphics Context には、以下のようなものがある。
ビットマップ
ウインドウ
印刷
PDF
Graphics States
Quartz において描画操作を行った場合に、その操作のパラメータの一部は、状態として保存される。例えば、塗り潰しの色を設定する API を呼び出した場合、その後の塗り潰し操作では設定した色に塗り潰される。このような描画に関連する状態を保存しているのが Graphics State である。Graphics State に格納される要素としては、色の他にも線の幅や現在位置、フォントサイズ等がある。 Opaque Data Type
Quartz 2D では、graphics context に加えて、様々な種類の opaque data type を用意している。これらは Core Graphics framework の一部なので、データ型及びメソッドの prefix には CG が付与される。 CGPathRef, CGImageRef, CGLayerRef, ...
参考